﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace TwoGesture
{
    class ControlPregunta
    {
        private static ControlPregunta ObjCtrPregunta = null;
        private Conexion ObjConexion = Conexion.InsConexion();

        public static ControlPregunta InsControlPregunta()
        {
            if (ObjCtrPregunta == null)
            {
                ObjCtrPregunta = new ControlPregunta();
            }
            return ObjCtrPregunta;
        }

        public bool validacionformulario(TextBox pregunta,TextBox r1,TextBox r2,TextBox r3,TextBox r4,RadioButton[] rbs,Label idPregunta,String categoria)
        { 
            bool bandera = false;
            int contador=0;
            for (int i = 0; i < rbs.Length; i++)
            {
                if (rbs[i].Checked)
                {
                    contador = contador + 1;
                }
            }

            if (pregunta.Text.Trim().ToString().Equals("") || r1.Text.Trim().ToString().Equals("") || r2.Text.Trim().ToString().Equals("") ||
                r3.Text.Trim().ToString().Equals("") || r4.Text.Trim().ToString().Equals("") || categoria.Equals("") || contador.Equals(0))
            {
                String texto = "Los Siguientes campos continuan vacios:\n";
                if (pregunta.Text.Trim().ToString().Equals(""))
                {
                    texto = texto + "-Pregunta\n";
                }
                if (r1.Text.Trim().ToString().Equals(""))
                {
                    texto = texto + "-Respuesta 1\n";
                }
                if (r2.Text.Trim().ToString().Equals(""))
                {
                    texto = texto + "-Respuesta 2\n";
                }
                if (r3.Text.Trim().ToString().Equals(""))
                {
                    texto = texto + "-Respuesta 3\n";
                }
                if (r4.Text.Trim().ToString().Equals(""))
                {
                    texto = texto + "-Respuesta 4\n";
                }
                if (categoria.Equals(""))
                {
                    texto = texto + "-Categoria\n";
                }
                if (contador.Equals(0))
                {
                    texto = texto + "-Respuesta correcta\n";
                }
                MessageBox.Show(texto);
            }
            else
            {
                bandera = true;
            }

            return bandera;
        }

        public SqlDataReader LlenarCombo()
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("Select * from tema where activo=1", ConexionSQL);
            SqlDataReader dr = cmd.ExecuteReader();
            return dr;
        }

        public SqlDataReader LlenarTabla()
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("Select * from pregunta where activo=1 ", ConexionSQL);
            SqlDataReader dr = cmd.ExecuteReader();
            return dr;
        }

        public SqlDataReader LlamarRespuestas(Label lblid)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("Select * from respuesta where activo=1 and idpregunta=" + lblid.Text.ToString(), ConexionSQL);
            SqlDataReader dr = cmd.ExecuteReader();
            return dr;
        }

        public int CompararValor(int[] valores)
        {
            int VMax = valores[0];
            int posicion = 0;

            for (int i = 1; i < valores.Length; i++)
            {
                if (VMax < valores[i])
                {
                    VMax = valores[i];
                    posicion = i;
                }
            }

            return posicion;
        }

        public void GuardarPregunta(String categoria, Label id, string[] datos, RadioButton[] CalifRespues)
        {

            if (id.Text.ToString().Equals(""))
            {
                SqlConnection ConexionSQL = ObjConexion.Enlace();
                ObjConexion.Enlace();
                ConexionSQL.Close();
                ConexionSQL.Open();
                int contador = 0;
                SqlCommand cmd = new SqlCommand("insert into Pregunta values(@dato,@cat,default)", ConexionSQL);
                cmd.Parameters.AddWithValue("@dato", datos[contador]);
                cmd.Parameters.AddWithValue("@cat", categoria);
                SqlDataReader dr = cmd.ExecuteReader();
                dr.Close();
                cmd = new SqlCommand("select top 1 * from pregunta order by idpregunta desc", ConexionSQL);
                int idpregunta = cmd.ExecuteScalar().GetHashCode();
                while (contador < CalifRespues.Length)
                {
                    cmd = new SqlCommand("insert into Respuesta values(@respuesta,@valor,@idpregunta,default)", ConexionSQL);
                    if (CalifRespues[contador].Checked)
                    {
                        cmd.Parameters.AddWithValue("@valor", 1);
                    }
                    else
                    {
                        cmd.Parameters.AddWithValue("@valor", 0);
                    }
                    contador = contador + 1;
                    cmd.Parameters.AddWithValue("@respuesta", datos[contador]);
                    cmd.Parameters.AddWithValue("@idpregunta", idpregunta);
                    dr = cmd.ExecuteReader();
                    dr.Close();
                }

            }
            else
            {
                if (!id.Text.ToString().Equals(""))
                {
                    SqlConnection ConexionSQL = ObjConexion.Enlace();
                    ObjConexion.Enlace();
                    ConexionSQL.Close();
                    ConexionSQL.Open();
                    int contador = 0;
                    SqlCommand cmd = new SqlCommand("update Pregunta set Descripcion=@dato,IdTema=@cat where IdPregunta=@id", ConexionSQL);
                    cmd.Parameters.AddWithValue("@dato", datos[contador]);
                    cmd.Parameters.AddWithValue("@cat", categoria);
                    cmd.Parameters.AddWithValue("@id",id.Text.Trim().ToString());
                    SqlDataReader dr = cmd.ExecuteReader();
                    dr.Close();

                    cmd = new SqlCommand("select IdResuesta from Respuesta where IdPregunta="+id.Text.Trim().ToString(), ConexionSQL);
                    dr = cmd.ExecuteReader();
                    int [] idcadena=new int[4];
                    int i=0;
                    while( dr.Read()){
                        idcadena[i]=dr.GetInt32(0);
                        i = i + 1;
                    }
                    dr.Close();
                    while (contador < CalifRespues.Length)
                    {
                        
                        cmd = new SqlCommand("update Respuesta set Descripcion=@respuesta, valor=@valor where IdResuesta=@idresp", ConexionSQL);
                        if (CalifRespues[contador].Checked)
                        {
                            cmd.Parameters.AddWithValue("@valor", 1);
                        }
                        else
                        {
                            cmd.Parameters.AddWithValue("@valor", 0);
                        }
                        cmd.Parameters.AddWithValue("@idresp", idcadena[contador]);
                        contador = contador + 1;
                        cmd.Parameters.AddWithValue("@respuesta", datos[contador]);
                        dr=cmd.ExecuteReader();
                        dr.Close();
                    }
                }
            }
           
        }

        public void BajaPregunta(Label LblIdPregunta)
        {
            if (!LblIdPregunta.Text.ToString().Equals(""))
            {
                SqlConnection ConexionSQL = ObjConexion.Enlace();
                ObjConexion.Enlace();
                ConexionSQL.Close();
                ConexionSQL.Open();
                SqlCommand cmd = new SqlCommand("update pregunta set activo=0 where idpregunta=" + LblIdPregunta.Text.ToString(), ConexionSQL);
                SqlDataReader dr = cmd.ExecuteReader();
                dr.Close();
                cmd = new SqlCommand("update Respuesta set Activo=0 where  IdPregunta=" + LblIdPregunta.Text.ToString(), ConexionSQL);
                dr = cmd.ExecuteReader();
                ConexionSQL.Close();
            }
         
        }
    }
}
